// testgprof.cpp
#include<iostream>


int main(int argc, char const *argv[])
{
    
    std::cout << "start test------!" << std::endl;

    int64_t d = 0;

    for (int i = 0; i < 1000000000; i++)
    {
        d += i;
    }
    std::cout << "result is:" << d << std::endl;

    std::cout << "end test!" << std::endl;

    return 0;
}

// 
// 编译  $ g++ -pg testgprof.cpp -o tgprof,
// 执行  $ ./tgprof  会生成 gmon.out,
// 运行这个命令后可以在屏幕上看到相关的分析 $ gprof tgprof gmon.out
// 
// 安装 pip
// python 安装 gprof2dot   graphviz,
// $ pip install gprof2dot 
// $ ./tgprof 
// $ gprof tgprof gmon.out > result
// $ gprof2dot result > report.dot 
// $ dot -Tpng -o report.png report.dot
// $
// $ gprof tgprof gmon.out | gprof2dot  > report.dot 
// $ dot -Tpng -o report.png report.dot
// $
// 
// 一般，大家安装完之后，系统还不能马上画图，一般会报错：
// Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 mp pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot xdot1.2 xdot1.4 xdot_json
// 解决办法：
// 查看php.ini disable_functions配置 proc_open 是否被禁用
// 排查 graphviz 是否安装成功, 命令行执行 dot -V 是否出版本号
// 还可以尝试 dot -c 命令重建配置
// 安装gd库，参考链接  https://gitlab.com/graphviz/graphviz/-/issues/1414
// Centos7
// yum install gd-devel
// ubuntu
// apt-get install libgd-dev
// 安装完gd库后, 重新编译安装graphviz
// 
// 一般，大家安装完之后，系统还不能马上画图，一般会报错：
// Format: "png" not recognized. Use one of: canon cmap cmapx cmapx_np dot dot_json eps fig gv imap imap_np ismap json json0 mp pic plain plain-ext pov ps ps2 svg svgz tk vml vmlz xdot xdot1.2 xdot1.4 xdot_json
// 解决办法：
// 需要安装一些依赖的工具
// yum  install  graphviz
// yum  install  libpng
// yum  install  graphviz-gd (刚开始我没有安装这个，总是报错)
// 
// 
// $ gprof2dot result > report.dot 
// $ dot -Tpng -o report.png report.dot
// 
// $ gprof ./tgprof | gprof2dot -n0 -e0 | dot -Tpng -o output.png
// $ gprof ./tgprof | gprof2dot -n0 -e0 | dot -Tpng -o output.png
// $ gprof ./linpack_gprof | ./gprof2dot.py -n0 -e0 |dot - Tpng -o output.png
// 
// 


// =================================================
// 
// 使用yum安装pip
// 因为测试环境搭建的需要，现在要在centos7系统上使用pip
// 1. 安装epel扩展源：yum -y install epel-release
// 2. 安装pip：yum -y install python-pip
//      $ pip --version  #==> pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)
// 3. 清除cache：yum clean all
// 4. 使用pip安装docker-compose:pip install docker-compose
// 5、升级pip：pip install --upgrade pip
// 
// =================================================
// 

/*
gprof、gprof2dot.py、dot使用方法简介
"https://blog.csdn.net/u012927281/article/details/51132064"

分析prof.log就可以获得程序的调用关系、函数执行时间等信息。对gprof的分析方法见以下blog
"http://blog.csdn.net/macky0668/article/details/6839517"

2).以上方法仍然存在一个问题就是分析结果不够直观，特别是函数的调用关系。因此为解决以上问题，可以配合gprof2dot.py与dot工具的使用。

1 安装gprof2dot.py与dot
通过以下地址可获得gprof2dot.py
"http://jrfonseca.googlecode.com/svn/trunk/gprof2dot/gprof2dot.py"

以上地址直接就给出了gprof2dot.py的内容，因此直接新建一个python文件并拷贝网页中的内容即可，拷贝完成后还需要改变python文件的权限
$ chmod 744 gprof2dot.py

通过以下地址可获得graphviz，安装graphviz后可使用dot工具
"http://www.graphviz.org/Download_source.php"

安装方法如下：
./configure
make
sudo make install

在使用上述工具前，还需要先产生 gmon.out 文件。gmon.out 文件的产生方法见上文通过以下命令即可得到函数调用图,
$ gprof ./linpack_gprof | ./gprof2dot.py -n0 -e0 |dot - Tpng -o output.png
结果如下：

*/

// 
// 

